"""
字符串

Version: 0.1
Author: yuwl
Date：2023-12-30
"""

# 字符串表示
s1 = 'hello, world!'
s2 = "hello, world!"
# 以三个双引号或单引号开头的字符串可以折行
s3 = """
hello,
world!
"""
# end=''表示末尾不换行
print(s1, s2, s3, end='')


# 转义
s1 = '\'hello, world!\''
s2 = '\n\\hello, world!\\\n'
print(s1, s2, end='')


s1 = '\141\142\143\x61\x62\x63'
print(s1)

# 将中文字符串转换为Unicode编码
chinese_str = "你好，世界"
unicode_str = chinese_str.encode('unicode_escape')
print(unicode_str)

# 将Unicode编码转换为中文字符串
unicode_str = "\\u4f60\\u597d\\uff0c\\u4e16\\u754c"
chinese_str = unicode_str.encode('utf-8').decode('unicode_escape')
print(chinese_str)



# 不转义
s1 = r'\'hello, world!\''
s2 = r'\n\\hello, world!\\\n'
print(s1, s2, end='')



# 字符串运算
s1 = 'hello' * 3
print(s1) # hello hello hello
s2 = 'world'
s1 += s2
print(s1) # hello hello hello world
print('ll' in s1) # True
print('good' in s1) # False
str2 = 'abc123456'
# 下标运算，左则从0开始，右则从-1开始
print(str2[2]) # c
# 切片(从开始索引到结束索引，不包含结束索引)
print(str2[2:5]) # c12
print(str2[2:]) # c123456
print(str2[2::2]) # c246
print(str2[::2]) # ac246
print(str2[::-1]) # 654321cba
print(str2[-3:-1]) # 45


# 字符串方法
str1 = 'hello, world!'
# len计算字符串长度
print(len(str1)) # 13
# 获得字符串首字母大写的拷贝
print(str1.capitalize()) # Hello, world!
# 获取字符串每个单词首字母大写的拷贝
print(str1.title()) # Hello, World!
# 获得字符串变大写后的拷贝
print(str1.upper()) # HELLO, WORLD!
# 从字符串中查找子串所在位置
print(str1.find('or')) # 8
print(str1.find('shit')) # -1
# 与find类似但找不到子串会引发异常
print(str1.index('or'))
# print(str1.index('shit')) # 引发异常
print(str1.startswith('He')) # False
print(str1.startswith('hel')) # True
print(str1.endswith('!')) # True
# 将字符串以指定宽度居中并在两则填充指定字符
print(str1.center(50, '*'))
# 将字符串以指定宽度靠右放置左则填充指定字符
print(str1.rjust(50, ' '))
str2 = 'abc123456'
# 检查是否是数字
print(str2.isdigit()) # False
# 检查字符串是否以字母构成
print(str2.isalpha()) # False
# 检查字符串是否以数字和字母构成
print(str2.isalnum()) # True
str3 = '  jackfrued@126.com'
print(str3)
# 获得字符串去掉左右两则空格之后的拷贝
print(str3.strip())


# 格式化
a, b = 5, 10
print('%d * %d = %d' % (a, b, a * b))

a, b = 5, 10
print('{0} * {1} = {2}'.format(a, b, a * b))

a, b = 5, 10
print(f'{a} * {b} = {a * b}')






